{"componentChunkName":"component---src-templates-blog-post-js","path":"/algorithm/time-complexity/","result":{"data":{"site":{"siteMetadata":{"title":"Tory","author":"[Tory]","siteUrl":"https://gatsby-starter-bee.netlify.com","comment":{"disqusShortName":"","utterances":"JaeYeopHan/gatsby-starter-bee"},"sponsor":{"buyMeACoffeeId":"jbee"}}},"markdownRemark":{"id":"dd4c4e55-02f3-5261-b3da-b9e98370c071","excerpt":"Jump to Complexity 1. Algorithm 알고리즘이란 문제를 해결하기 위한 여러 동작들의 모임입니다. 서로 다른 두 개의 알고리즘이 같은 결과를 출력할지라도 소비되는 컴퓨터의 메모리와, 출력까지 소요되는 시간은 달라지게 됩니다. 즉, 메모리와 시간이 알고리즘을 측정할 수 있는 기준이 됩니다. 2. Complexity 알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 시간 복잡도, 소비하는 메모리의 크기를 공간복잡도라고 부르고 있습니다. 2. Scape Complexity…","html":"<h1 id=\"jump-to-complexity\" style=\"position:relative;\"><a href=\"#jump-to-complexity\" aria-label=\"jump to complexity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Jump to Complexity</h1>\n<h2 id=\"1-algorithm\" style=\"position:relative;\"><a href=\"#1-algorithm\" aria-label=\"1 algorithm permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Algorithm</h2>\n<p>알고리즘이란 문제를 해결하기 위한 여러 동작들의 모임입니다. 서로 다른 두 개의 알고리즘이 같은 결과를 출력할지라도 소비되는 컴퓨터의 메모리와, 출력까지 소요되는 시간은 달라지게 됩니다. 즉, 메모리와 시간이 알고리즘을 측정할 수 있는 기준이 됩니다.</p>\n<h2 id=\"2-complexity\" style=\"position:relative;\"><a href=\"#2-complexity\" aria-label=\"2 complexity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Complexity</h2>\n<p>알고리즘이 어떤 문제를 해결하는데 걸리는 시간을 시간 복잡도, 소비하는 메모리의 크기를 공간복잡도라고 부르고 있습니다.</p>\n<h2 id=\"2-scape-complexity\" style=\"position:relative;\"><a href=\"#2-scape-complexity\" aria-label=\"2 scape complexity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Scape Complexity</h2>\n<p>공간 복잡도는 알고리즘이 동작하기 위해 필요한 공간의 크기 입니다. 대부분의 알고리즘이 중복되는 연산의 중간과정을 저장하고 재사용하기 위해 메모리를 소비합니다.</p>\n<h2 id=\"3-time-complexity\" style=\"position:relative;\"><a href=\"#3-time-complexity\" aria-label=\"3 time complexity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Time Complexity</h2>\n<p>알고리즘이 동작하는 데에 걸리는 시간 또는 연산의 횟수</p>\n<h4 id=\"31-시간-복잡도의-계산-방법\" style=\"position:relative;\"><a href=\"#31-%EC%8B%9C%EA%B0%84-%EB%B3%B5%EC%9E%A1%EB%8F%84%EC%9D%98-%EA%B3%84%EC%82%B0-%EB%B0%A9%EB%B2%95\" aria-label=\"31 시간 복잡도의 계산 방법 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3.1. 시간 복잡도의 계산 방법</h4>\n<p>반복문과 조건문을 고려해서 실행 횟수를 분석하는 방법이 있습니다.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 589px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 28.333333333333332%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABPElEQVQY0z2NzU7CUBCF+yaQYG97ae8tpZRQGnw9d25dGMCYaGtdAVVRYqJQIiwMhAASxKSwFCx/7boOED3z5Wxm5hzGqdw0yqZj77xeNpt3ln11fm8WHNuql43XkgHeqJiwbdrWtNdyu61pr/3Repm8NxlZTuA4BliEdnAI8RziEQKLY47nACzAlk2pqrdchmHo+0G4F5OQKAwhgiwTiYqSRCilkiSJgsCykIbAOcRFo1FN02az2fx77nnedrPxfZ/BGBMsUipmMoqqJtNpBT6TSYVSEovFjvaCiEgkks1q4/G43x/8eN5isVitVgxU6XqaUKIoKV3XVVU9tIH4P0EBBOWOc67rTj6/Ntvter0OgoCpGvmH6zz4PzWrWLo4y5+ePJrFqlE4ADe128vR2/PQeRp12p1udzAc/gK1q6uMAsfFQwAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"analize time complextity\" title=\"analize time complextity\" src=\"/static/57b8c880dd83208163ec0295ced0e9f7/b1665/analize_time_complexity.png\" srcset=\"/static/57b8c880dd83208163ec0295ced0e9f7/5a46d/analize_time_complexity.png 300w,\n/static/57b8c880dd83208163ec0295ced0e9f7/b1665/analize_time_complexity.png 589w\" sizes=\"(max-width: 589px) 100vw, 589px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<p>위 코드는</p>\n<ol>\n<li>n은 알고리즘이 처리해야할 자료의 크기</li>\n<li>for 문의 i에 대입되는 연산 횟수 n번</li>\n<li>sum 변수와 array[i]의 덧샘 연산 횟수 n번</li>\n<li>덧샘 연산이 끝나고 sum 변수에 대입되는 연산 횟수 n번</li>\n</ol>\n<p>으로 총 3n번의 시간복잡도를 가지게 됩니다.</p>\n<p><strong>NOTE:</strong> 조건문과 같이 경우에 따라 반복되는 횟수가 달라지는 경우가 있습니다. 따라서 최악의 경우, 최선의 경우, 평균적인 경우로 알고리즘의 복잡도를 정의할 수 있습니다. 그리고 일반적으로는 <strong>최악의 경우</strong>에 대해 알고리즘의 복잡도를 정의합니다.</p>\n<h2 id=\"4-asymtotic-notation-점진적-표기법\" style=\"position:relative;\"><a href=\"#4-asymtotic-notation-%EC%A0%90%EC%A7%84%EC%A0%81-%ED%91%9C%EA%B8%B0%EB%B2%95\" aria-label=\"4 asymtotic notation 점진적 표기법 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Asymtotic Notation (점진적 표기법)</h2>\n<p>보통 n의 크기가 작을 때는 소요되는 시간이 매우 작습니다.\n따라서 알고리즘에 입력되는 자료의 개수 n이 충분히 커졌을 때 알고리즘의 성능에 따라 사용자는 영향을 받게 됩니다.</p>\n<p>이렇게 n이 충분이 크다고 가정한 상태에서 하드웨어 성능을 배제하고 알고리즘의 성능만을 공평하게 비교할 수있는 효율적인 표기 방법이 <strong>점진적 표기법</strong> 입니다.</p>\n<ul>\n<li>복잡도 순위</li>\n<li>\n<p>O(1) &#x3C; O(logn) &#x3C; O(n) &#x3C; O(nlogn) &#x3C; O(n^2) &#x3C; O(2^n) &#x3C; O(n!)</p>\n<ul>\n<li>상수, 로그, 선형, 선형로그, 다항식(제곱), 지수, 팩토리얼</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"41-big-o-notation\" style=\"position:relative;\"><a href=\"#41-big-o-notation\" aria-label=\"41 big o notation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4.1. Big-O Notation</h3>\n<p>Big-O는 시간의 상한을 나타냅니다. 시간의 상한이란 예를 들어 O(n^2)으로 표기된 Big-O 표기법은 O(1), O(n) 처럼 O(n^2)보다 높은 성능을 보여주는 시간 복잡도를 모두 포함한다는 의미입니다. 즉, 보통 최악의 경우를 많이 생각하기 때문에 최악의 Big-O 표기법은 해당 알고리즘이 <strong>최악의 경우</strong>에도 표기된 <strong>성능을 보장</strong>한다는 의미로 해석할 수 있습니다.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 361px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 102.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAYAAABG1c6oAAAACXBIWXMAAAsTAAALEwEAmpwYAAABh0lEQVQ4y52UyY7CMAyG8/5PxmU4MBJHlgMdEHu6QQuYfmFcpW3KZimkxOkX+7dTI5Xdbjf5xkLvmSzL5FMoe3X/5XKR4/Eom83GzYafT4AK0/3WWhn+DGU0+pX5bC6GhXeBPkjnsixFg3Ipvwv0/fpcFIXs93uXth72EtiOSp/P57ODXa/XZlFCwBDE96dpKofDoVGYYISh4dvpdHKgJEka6+PxWAaDgazX6y6wbYhORAgPSFNk5oA4jiWK/lz6aFoD1dhAClo9/LzoR2ltXPlsdVDmIB0NNbLHZiuLReRgQNXyXNNNG+ttuRpAouN/FEV1VPiA4wsVrl1AE3spL5dLFwEtQTRcS2Y/5RCkkTJiYsyr1eqRXgVCdIqh6fX1Y+fjQFSkuN3uaoH1g9G+Gc9ANZCvBNHtvK739etLre8wg9iA8jyvHQD7Gv3V6PTho0Vy+dZcUbgBFICBfv78avAuXUEtyNZQRRYYFCWJE5lMpg5Y/K8/HZU8MBRsQiLPpjMJSfGO3QFt8nRUXTxTOQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Big-O-Graph\" title=\"Big-O-Graph\" src=\"/static/ce969399fcb6b91b4a105ea0f605792c/39d76/Big-O-Graph.png\" srcset=\"/static/ce969399fcb6b91b4a105ea0f605792c/5a46d/Big-O-Graph.png 300w,\n/static/ce969399fcb6b91b4a105ea0f605792c/39d76/Big-O-Graph.png 361w\" sizes=\"(max-width: 361px) 100vw, 361px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<ul>\n<li>시간 복잡도 f(n) 의 Big-O Notaion(정의):</li>\n<li>O(g(n)) = { f(n)|0 &#x3C;= f(n) &#x3C;= c*g(n) for all n >= n0 > 0}</li>\n<li>\n<p>예시</p>\n<ul>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=3(n%2B1)%5E2%20%5Cin%20O(n%5E2)\" alt=\"3(n+1)^2 \\in O(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E%7B1.998%7D%20%5Cin%20O(n%5E2)\" alt=\"n^{1.998} \\in O(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%2B%20n%5Clog%20n%20%2B%203%20%5Cin%20O(n%5E2)\" alt=\"n^2 + n\\log n + 3 \\in O(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%5Cin%20O(n%5E2)\" alt=\"n^2 \\in O(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%20%5Cin%20O(n%5E2)\" alt=\"n \\in O(n^2)\"></li>\n</ul>\n</li>\n</ul>\n<h3 id=\"42-big-omega-notation\" style=\"position:relative;\"><a href=\"#42-big-omega-notation\" aria-label=\"42 big omega notation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4.2. Big-Omega Notation</h3>\n<p>Big-Omega는 하한을 나타냅니다.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 398px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 100.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZElEQVQ4y6VU2Y6DMAzM/39Yn7tPfUDqqlskJG7CfXoZq66ilGiBtWSZw56M7QE1DAPN80ywZVnov6aqqqJpmg4DSi6i6ao+CejK381QGNjXqAUGRscMXYBbAOYzsTzL6XK5kOd5jPMB6GJi2jiO1LYd6UJTmqaktebFbjI0wcT6vl8BWirLkvI8ZwDUAdg+cLNliQBJ04yL4QAWidnzxQzhToYoRjt/bb6ua7pev9hvt5sbEK2ZYGAGBk3TcMtalxyRF8cxv/tYilhRFJQkyWv4Ld/DAQBAPBeZfOgQCV3X8cABjML7/Zsj2nEN35bX+0sp11N936fH47FSTxgEs9tTvKUIFUURhWHIN1mWMbNmBRVd7dXmGxCzwjxgaB1+5A9kH6TQor0UgJqAR5y3bIsVGjz7b1TyFUAe2LgZW8RG4oa/cjGiIAj4XoEdGImjXZEN5GK+cznyJF9t0X7+PHnjZ+wXoQ8mEwgUMngAAAAASUVORK5CYII='); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Big-O-Graph\" title=\"Big-O-Graph\" src=\"/static/910b727d4de6ac2c186cf885c05304cd/692d4/Big-Omega-Graph.png\" srcset=\"/static/910b727d4de6ac2c186cf885c05304cd/5a46d/Big-Omega-Graph.png 300w,\n/static/910b727d4de6ac2c186cf885c05304cd/692d4/Big-Omega-Graph.png 398w\" sizes=\"(max-width: 398px) 100vw, 398px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<ul>\n<li>시간복잡도 f(n)의 Big-Omega Notation(정의):</li>\n<li>Ω(g(n)) = { f(n)|0 &#x3C;= c*g(n) &#x3C;= f(n) for all n >= n0 > 0}</li>\n<li>\n<p>예시</p>\n<ul>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=3(n%2B1)%5E2%20%5Cin%20%5Ctext%7B%CE%A9%7D(n%5E2)\" alt=\"3(n+1)^2 \\in \\text{Ω}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E%7B2.002%7D%20%5Cin%20%5Ctext%7B%CE%A9%7D(n%5E2)\" alt=\"n^{2.002} \\in \\text{Ω}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%2B%20NlogN%20%2B%203%20%5Cin%20%5Ctext%7B%CE%A9%7D(n%5E2)\" alt=\"n^2 + NlogN + 3 \\in \\text{Ω}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%5Cin%20%5Ctext%7B%CE%A9%7D(n%5E2)\" alt=\"n^2 \\in \\text{Ω}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E3%20%5Cin%20%5Ctext%7B%CE%A9%7D(n%5E2)\" alt=\"n^3 \\in \\text{Ω}(n^2)\"></li>\n</ul>\n</li>\n</ul>\n<h3 id=\"43-big-theta-notation\" style=\"position:relative;\"><a href=\"#43-big-theta-notation\" aria-label=\"43 big theta notation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4.3 Big-Theta Notation</h3>\n<p>Big-Theta는 상한과 하한의 교집합을 나타냅니다.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 386px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 100.66666666666666%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAAAsTAAALEwEAmpwYAAABp0lEQVQ4y52U3W6CQBCF9/3fzNQLiXflwkaoEBPlXwXUqd/QtbACbTrJZMdlOXvOzEHTNq3c73ch7DoXnHHPs9Z1LdfrVUxRFFrMAbogtm6aRsIwlOXbUjzPk91uJ6Ysy1nAMUY2YBXH8QP0U58pwznAMVa3203KspIkSSTPc2nb4bumLOYB+2BVVcnxeNQV4DE1k4CuzDwvJMuyl+fsrVaeBEEwDeiup9PpCeaypmW+78vhcJiW7PYMme6+nXKSpIO9F0C3j2mayvl8HuwBlKbZ46JEa5KWMPUBoA1YAYJMfEowzarqpDNd3gEI7y0WC1mv1486emWIHZB4uVwUlIQNIEwXFvSUmr39fj9oycCHvIjEfn+K7wu7weSa1FzUt87Th0jiBwe40VohS38sAmvOTXmvn8rQNr/zWy5xFD8vwQ7InAJw/WvQz/dIImWz+VAQLiLHrDT3r6QMAY2iSN1uDTrF6Lc0SAyCUKfa2aMd7dVfw/jvvmy3W50qPcMOJLVO85fkDD1mcJAxdsMmvrJ+qy/14NlYogwgZqBfikuZD51+/je+ADA3HvqHW4GtAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Big-O-Graph\" title=\"Big-O-Graph\" src=\"/static/a9fd24473562ba95fed2a09ff8b09b3e/7bc0b/Big-Theta-Graph.png\" srcset=\"/static/a9fd24473562ba95fed2a09ff8b09b3e/5a46d/Big-Theta-Graph.png 300w,\n/static/a9fd24473562ba95fed2a09ff8b09b3e/7bc0b/Big-Theta-Graph.png 386w\" sizes=\"(max-width: 386px) 100vw, 386px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<ul>\n<li>시간복잡도 f(n)의 Big-Theta Notation(정의):</li>\n<li>\n<p><img src=\"https://render.githubusercontent.com/render/math?math=f(n)\" alt=\"f(n)\"> 의 Big-Theta Notation 정의:</p>\n<ul>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=%5Ctext%7B%CE%98%7D(g(n))%20%3D%20%5C%7B%20f(n)%7C0%20%5Cle%20c_1%20%5Ccdot%20g(n)%20%5Cle%20f(n)%20%5Cle%20c_2%20%5Ccdot%20g(n)%5Cspace%5Cspace%20%5Ctext%7Bfor%20all%7D%5Cspace%20n%20%5Cge%20n_0%20%3E%200%20%5C%7D%5Cspace%20%5Cspace%20%5Ctext%7Bfor%7D%5Cspace%20%5Cspace%20%5Cexists%20c_1%20%3E%200%2C%5Cspace%5Cexists%20c_2%20%3E%200.\" alt=\"\\text{Θ}(g(n)) = { f(n)|0 \\le c_1 \\cdot g(n) \\le f(n) \\le c_2 \\cdot g(n)\\space\\space \\text{for all}\\space n \\ge n_0 > 0 }\\space \\space \\text{for}\\space \\space \\exists c_1 > 0,\\space\\exists c_2 > 0.\"></li>\n</ul>\n</li>\n<li>\n<p>예시</p>\n<ul>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=3(n%2B1)%5E2%20%5Cin%20%5Ctext%7B%CE%98%7D(n%5E2)\" alt=\"3(n+1)^2 \\in \\text{Θ}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%2B%20n%5Clog%20n%20%2B%203%20%5Cin%20%5Ctext%7B%CE%98%7D(n%5E2)\" alt=\"n^2 + n\\log n + 3 \\in \\text{Θ}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E2%20%5Cin%20%5Ctext%7B%CE%98%7D(n%5E2)\" alt=\"n^2 \\in \\text{Θ}(n^2)\"></li>\n<li><img src=\"https://render.githubusercontent.com/render/math?math=n%5E3%20%5Cin%20%5Ctext%7B%CE%98%7D(n%5E3)\" alt=\"n^3 \\in \\text{Θ}(n^3)\"></li>\n</ul>\n</li>\n</ul>\n<h3 id=\"44-최악의-경우에-big-o-표기법을-사용하는-이유\" style=\"position:relative;\"><a href=\"#44-%EC%B5%9C%EC%95%85%EC%9D%98-%EA%B2%BD%EC%9A%B0%EC%97%90-big-o-%ED%91%9C%EA%B8%B0%EB%B2%95%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0\" aria-label=\"44 최악의 경우에 big o 표기법을 사용하는 이유 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4.4 최악의 경우에 Big-O 표기법을 사용하는 이유</h3>\n<p>알고리즘은 최악, 평균, 최선의 경우로 나누어 분석할 수 있다. 그중에 일반적으로 최악의 경우를 Big-O 표기법으로 표기하는데 그 이유는 다음과 같습니다.</p>\n<ol>\n<li>알고리즘이 최선의 상황으로 동작하는 경우는 매우 드뭅니다.</li>\n<li>Big-Omega 표기법은 하한을 나타내기 때문에 표기된 시간 복잡도가 가장 빠른 것을 보장합니다.</li>\n<li>최선의 경우를 Big-Omega로 표기하면 알고리즘이 최선의 경우 이보다 더 빠르게 동작할 수는 없다는 것을 보장합니다.</li>\n<li>3번으로 해석된 결과를 의미있게 사용할 수 있는 곳이 별로 없습니다.</li>\n<li>최선의 경우를 Big-O로 표기하면 알고리즘이 최선으로 동작하는 것 보다 더 빠르게 동작하는 경우가 표기법에 포함되므로 표기의 의미가 사라집니다.</li>\n<li>평균의 경우는 가능한 모든 경우를 계산해야 합니다. 따라서 복잡도를 계산하기가 매우 까다롭습니다.</li>\n<li>최악의 경우를 Big-O로 표기하면 Big-O가 상한을 나타내기 때문에 최악의 경우보다 더 최악인 경우는 없다는 의미가 됩니다.</li>\n<li>7번의 의미를 해석해보면 최악의 경우에도 이 정도의 성능을 보장한다는 의미로 해석할 수 있습니다.</li>\n</ol>","frontmatter":{"title":"Time Complexity","date":"April 04, 2021"}}},"pageContext":{"slug":"/algorithm/time-complexity/","previous":{"fields":{"slug":"/algorithm/insertion-sort/"},"frontmatter":{"title":"Insertion Sort","category":"algorithm","draft":false}},"next":{"fields":{"slug":"/algorithm/binary-search/"},"frontmatter":{"title":"Binary Search","category":"algorithm","draft":false}}}},"staticQueryHashes":["3128451518","521680639"]}